Historically, computer networks have been made up of multiple computers connected together by some data transport medium, such as Ethernet cables, that enables the computers to communicate with one another. Each computer has its own central processing unit for executing programs to process data and its own local storage device, such as a disk drive, for storing the programs and data. In this arrangement, each computer controls access to its own local storage and selectively enables access by other computers on the network to its local storage.
However, certain disadvantages exist in this arrangement, particularly if the computers are part of a network of a single fiscal entity, such as a corporation or university. One potential disadvantage is the inefficient use of the storage devices. Each computer must have a disk drive, but may only use a relatively small percentage of the space on the disk drive with the remainder of the space being wasted. A second potential disadvantage is the difficulty of managing the storage devices for the potentially many computers in the network. A third potential disadvantage is that the localized storage arrangement does not facilitate applications in which the various users of the network need to access a common large set of data, such as a database. These disadvantages, among others, have caused a trend toward more centralized, shared storage in computer networks.
Today, many computer networks include centralized, shared storage devices. Because the storage devices are centralized, they can be managed more easily by network administrators. Additionally, the network administrators can monitor the amount of storage space needed and incrementally add storage devices on an as-needed basis, thereby more efficiently using storage device space. Furthermore, because the data is centralized, all the users of the network who need to access a database, for example, can do so without overloading one user's computer.
In the centralized, shared storage model, the network may include a storage controller that has multiple storage devices connected to it that provide a relatively large amount of storage space. Each of the computers is networked to the storage controller and the storage controller provides access to the storage space. In this model, the need may still exist for access to be controlled to different portions of the storage space by different users. For example, different departments in a corporation may exist, and each department may desire to keep its data separate and deny the other departments access to its data. In the centralized, shared storage model, the storage controller must perform this access control function.
Current storage controllers include a microprocessor that performs the access control function. The microprocessor examines each request from the computers in the network and determines whether the computer requesting access to the storage device specified in the request has permission to access the specified storage device. However, the microprocessor has many other functions that it must perform in addition to the access control function. For example, if the storage controller is a redundant array of inexpensive disks (RAID) controller, the microprocessor must determine which sectors on which physical disk drive or drives the data specified in the computer's request must be accessed to read or write the data. That is, the microprocessor must perform the striping or mirroring associated with RAID requests. Additionally, the microprocessor may be required to perform the exclusive-OR operations of the data required in the RAID 5 level, for example, or to at least initiate the exclusive-OR operation by another circuit. Furthermore, the storage controller typically includes relatively large amounts of buffer memory for buffering data as it is transferred between the storage devices and the computers on the network. The microprocessor performs the task of managing use of the buffer and perhaps managing the buffer as a cache memory.
Furthermore, since the different computers in the network may have access to only a subset of the storage devices, the computers may refer to the storage devices by a different set of identifiers than the microprocessor uses to identify the storage devices. Hence, the microprocessor must perform a mapping function to map the identifier used in a request from one of the computers to access a storage device to the unique identifier used by the microprocessor to identify the storage device.
As the number of storage devices and computers accessing the storage devices increases, the microprocessor may become overloaded performing all of its various functions in addition to the access control function and mapping function, and may become the bottleneck for the processing of data requests. Therefore what is needed is a storage controller and method for offloading the access control function or the mapping function or both from the microprocessor.